package evaluacion;

import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import modelo.Expresion;
import modelo.Variable;
import net.java.dev.eval.Expression;

public class EvalAdapter extends EvaluadorMatematico {

	private Expression evaluador;
	
	public EvalAdapter(){
	

		
		
	}

	@Override
	public BigDecimal evaluarExpression(Expresion expresion,Set<Variable> variables){
		

		Map<String, BigDecimal> mapa = new HashMap<String, BigDecimal>();
		
		Iterator<Variable> iterador = variables.iterator();
		
		while(iterador.hasNext()){
			
			Variable variable = iterador.next();
			
			mapa.put(variable.getIdentificador(),variable.getValor());
			
		}
		
		 evaluador = new Expression(expresion.getCadena());
		
		BigDecimal resultado = evaluador.eval(mapa);
		
		
		
		return resultado;
	}
	

	@Override
	public boolean verificarExpression(Expresion expresion,Set<Variable> variables) {
	
		
		try{
		BigDecimal resultado = evaluarExpression(expresion, variables);
	
		}catch(RuntimeException e){
			
		return false;
			
		}
		
		return true;
	};
	
	
	
	
	
	
	
	
	
}
